package com.maibow.service.app;

import java.io.Serializable;
import java.lang.reflect.Type;
import java.util.List;

import com.maibow.util.Logger;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;

/**
 * 
 * 脉博网络后台管理系统
 * 包名：com.maibow.service.app
 * 文件名：ApiResult.java
 * 作者: 吴比(Wubi)
 * 时间：2015年5月23日-下午5:30:12
 * Copyright@ 2015湖南脉博网络科技有限公司-版权所有
 *
 */
public class ApiResult implements Serializable {

    /**
     * serialVersionUID:TODO（用一句话描述这个变量表示什么）
     *
     * @since 1.0.0
     */

    private static final long serialVersionUID = 1380002581695062542L;

    private int code;

    private String originalCode;

    private String value;

    private Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getOriginalCode() {
        return originalCode;
    }

    public void setOriginalCode(String originalCode) {
        this.originalCode = originalCode;
    }

    /**
     * 将json转换为对应的实体对象
     *
     * @param aClass
     * @return
     */
    @SuppressWarnings("unchecked")
    public <T> T getDomain(Class<?> aClass) {
        try {
            Object fromJson = gson.fromJson(value, aClass);
            Logger.getLogger(getClass()).debug("Json convert to :" + fromJson);
            return (T) fromJson;
        } catch (JsonSyntaxException e) {
            Logger.getLogger(getClass()).error(e.getMessage(), e);
        }
        return null;

    }

    /**
     * 将json转换为对应的实体对象集合
     *
     * @return
     */
    public <T> List<T> getDomainList(Type type) {
        try {
            Logger.getLogger(getClass()).debug(value + "");
            return gson.fromJson(value, type);
        } catch (JsonSyntaxException e) {
            Logger.getLogger(getClass()).error(e.getMessage(), e);
        }
        return null;
    }

}
